昨天做好network的準備之後,就可以開始準備部署,接下來會依序介紹,部署之前還需要做什麼,以及部署的步驟。基本上會需要準備cluster、service和task,它們的關係會像下面這張圖,cluster上面有多個service,每個service上面可以跑多個task,task上可以跑多個container。
在部署service的時候,需要先定義好container的infra,像是要部署在Fargate還是EC2,要使用什麼OS架構,CPU的大小要多少,以及部署的時候要用哪個role去執行。role的部分,沒有特殊需求的話,基本上使用AWS預先產生好的AWSServiceRoleForECS
即可。
然後還需要設定Image的URI,這樣部署的時後才知道要去哪裡抓image。並且可以指定container開放哪些port,甚至是設定環境變數。
設定好之後就可以看到剛才設定的相關資訊,如果要修改,需要新增一個版本,不能直接編輯。
因為service要掛在cluster底下,所以部署前還需要新增一個cluster。新增的時候一樣需要選擇infra,如果要在cluster上跑指定的container,infra必須跟Task definition
設定的一致。
新增之後就可以看到上面提示正在執行。
新增cluster是透過cloudformation,所以可以到cloudformation查看進度。
有了cluster之後,就可以新增service準備部署。一開始要先選擇Capacity provider strategy
,決定執行時有多少task和Fargate的版本。
再來需要選擇task definition,在前面有設定過。
Networking的部分,像前面所說的,VPC需要可以對外部網路存取,所以選擇的VPC不能是封閉不能對外的。
Service一樣是透過cloudformation產生的,所以設定完按Create之後,就可以到cloudformationt查看進度。
部署Service的過程中,會新增task,在task這邊也可以觀察是否有failed的情形。有發現failed的話,可能是在部署container的過程中失敗。
如果要看過程是成功還是失敗,Events也可以看到紀錄。